package com.seecen.day07;

import javax.swing.*;
import java.awt.*;

public class Ball {
    //X轴坐标
    public int x;
    //Y轴坐标
    public int y;
    //半径
    public int r;
    //运动方向：0向上，1向下
    public int ori;
    //类型：0敌机 1子弹
    public int type;

    //图片：通过图片地址获取图片
    //子弹图片
    public Image img_fire = new ImageIcon("Fire.jpg").getImage();
    //敌机图片
    public Image img_foe = new ImageIcon("diji.jpg").getImage();

    //声明类型常量
    //子弹
    public static final int FIRE = 0;
    public static final int FOE = 1;

    //声明方向常量
    public static final int UP = 0;
    public static final int DOWN = 1;

    public void draw(Graphics g) {
        //根据不同的类型绘制不同的图案
        switch (type) {
            case FIRE:
                g.drawImage(img_fire, x, y, r * 2, r * 2, null);
                break;
            case FOE:
                g.drawImage(img_foe, x, y, r * 2, r * 2, null);
                break;
        }
    }

    /**
     * 移动的方法
     * 通过方向判断是子弹的移动还是敌机的移动
     * UP：向上  DOWN：向下
     * Y轴坐标变化实现纵向移动
     */
    public void move() {
        switch (ori) {
            case UP:
                y--;//即y=y-1,若改变速率，直接写成y=y-n（n>0）
                break;
            case DOWN:
                y++;
                break;
        }
    }


    public boolean isTouch(Ball ball){
        boolean b=false;
        //第一个球的圆心坐标
        int x1=x+r;
        int y1=y+r;
        //第二个球的圆心坐标
        int x2=ball.x+ball.r;
        int y2=ball.y+ball.r;
        //两点之间的距离
        double s=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
        //两者的半径之和
        double sr=r+ball.r;
        if(s<=sr){
            b=true;
        }else{
            b=false;
        }
        return b;
    }
}

